package com.crm.customers.service;

import java.util.List;

import com.crm.customers.model.CustomerInfo;
import com.crm.customers.model.CustomerQualificationItem;
import com.crm.customers.model.CustomerQualificationUser;
import com.crm.sys.model.Log;
import com.crm.util.Pager;


public interface CustomerService {
	
	
	 /**
	  * 获取客户基本信息列表
	  * 带分页，根据cinfo中的条件查询相应的列表
	  * @param cinfo
	  * @return
	  */
	 public Pager getCustomerInfoList(CustomerInfo cinfo, int pageNo, int pageSize);
	 
	/**
	  * 保存客户信息
	  * @param user
	  * @return
	  */
	 public CustomerInfo saveCustomerInfo(CustomerInfo cinfo);
	 
	
		/**
	  * 保存客户信息
	  * @param user
	  * @return
	  */
	 public boolean updateCustomerInfo(CustomerInfo cinfo);
	 
	
	 
	 /**
	  * 获取客户基本信息详情
	  * @param cinfo
	  * @return
	  */
	 public CustomerInfo getCustomerInfoConttactsById(CustomerInfo cinfo);
	 
	 /**
	  * 获取客户基本信息详情
	  * @param cinfo
	  * @return
	  */
	 public CustomerInfo getCustomerInfoById(CustomerInfo cinfo);
	 
	 /**
	  * 获取客户基本信息详情(最大权限)
	  * @param cinfo
	  * @return
	  */
	 public CustomerInfo getCustomerInfoById1(CustomerInfo cinfo);
	 
	 /**
	  * 获取客户基本信息详情
	  * @param cinfo
	  * @return
	  */
	 public CustomerInfo getCustomerInfoById(Long id);
	 
	 /**
	  * 根据关键字 查找客户信息
	  * @param keyWord
	  * @param type  //类型  0 客户名称 1 商号名称  2 会员编码
	  * @param state //0 模糊查询 1 精确查询
	  * @return
	  */
	 public  List<CustomerInfo> getCustomerByKeyWord(CustomerInfo cinfo, int pageNo, int pageSize);
	 
	 /**
	 * 更新客户状态
	 * @param cinfo
	 * @param log 日志
	 * @return
	 */
	public  int updateCustomerState(CustomerInfo cinfo,Log log); 

	 /**
	 * 修改客户名称
	 * @param cinfo
	 * @return
	 */
	public  int updateCustomerName(CustomerInfo cinfo); 
	
	/**
	 * 验证同行业内该名称及商号是否存在
	 * @param info
	 * @return
	 */
	public int getCustomerInfoVerifyCount(CustomerInfo info);
	
	/**
	 * 获取首页记录
	 * 根据传入的type判断是什么
	 * 1录入客户2录入简历3今日联系4明日预约
	 * 然后首页展示8条
	 * 还要知道使用者的id
	 * */
	public List<CustomerInfo> getCustomerInfoListByTypes(int type,Long id,int pageSize,int pageNo);
		
	/**
	 *   客户名称修改申请          企业商号修改申请
	 * @param cdinfo
	 * @return
	 */
	//public int saveApplyCustomerCF(ApproveRecord app);
	/**
	 *   根据contentid和category验证申请是否已存在
	 * @param cdinfo
	 * @return
	 */
	//public int getApproveRecordByid(String contentid,int category);
	/**
	 *   审批记录查询
	 * @param cdinfo
	 * @return
	 */
	//public Pager getApproveRecordList(ApproveRecord ard,int pageNo, int pageSize);
	
	//修改客户category记录
	public int updateCustomerCategory(CustomerInfo info);
	
	/**
	 * 获取资源转移列表
	 * */
	public List<CustomerInfo> transformlist(CustomerInfo info,int pageNo,int pageSize);
	
	/**
	 * 保存企业用户手机号码，用，分开
	 * 传入的id是联系记录表的id
	 * */
	public CustomerInfo updatecustomertel(Long cuconid,Long ciid);
	
	/**
	 * 保存资质用，分开
	 * */
	public CustomerInfo updatecustomercategory(Long cucatid,Long ciid);
	
	/**
	 * 资源转移
	 * uid: 用户id
	 * cusid: 客户id
	 * */
	public CustomerInfo updatecustomeruid(Long uid,Long oid,Long cusid,Long infoid,int type);
	
	/**
	 * 资源转移全部
	 * */
	public int transformcustomerall(CustomerInfo info);
	
	/**
	 * 根据type获取总条数
	 * */
	public int getCustomerInfoTotalSizeByParams(CustomerInfo info);
	
	/**
	 * 防护客户到回收站
	 * @param info
	 * @return
	 */
	public void delCustomerInfo(CustomerInfo info);
	
	/**
	 * 2017/6/13更新
	 * 已经创建过合同，合同未到期的可以被搜索到
	 * 增加搜索结果：个人总垫款
	 * <br>------------------------------------------------<br>
	 * 添加个人合同使用的证书搜索。<br>
	 * 参数包括：成熟等级，关键字。<br>
	 * 关键字搜索的是名字，身份证号码，手机号码，职称。<br>
	 * 搜索的证书只能是在所有用户的我的库里，公共库中的内容不能被搜索到。<br>
	 * 已经创建过合同，且合同未到期的个人客户也不能被搜索到。<br>
	 * */
	public Pager getContractCustomerList(CustomerInfo info,int pageNo,int pageSize);
	
	/**
	 * 获取个人某种资源总条数<br>
	 * CustomerInfo中要含有：uid,type
	 * */
	public int getResourceCount(CustomerInfo info);
	
	/**
	 * 获取所有已经超期的用户
	 * */
	public List<CustomerInfo> getAllDiscardCustomer();
	
	/**
	 * 更新超期用户状态
	 * */
	public int updateAllDiscardCustomer();
	
	/**
	 * 获取待挂列表
	 * */
	public List<CustomerInfo> getAllwaitForAnchoredList(CustomerInfo info,int pageNo,int pageSize);
	
	/**
	 * 新.获取客服列表
	 * */
	public List<CustomerInfo> getCustomerServiceListByParams(CustomerInfo info,int pageNo,int pageSize);
	
	
	/**
	 * 获取待挂垫款总额
	 * */
	public int getAllwaitForAnchoredMoney(CustomerInfo info);
	
	/**
	 *  取得资质客户列表
	 * @param cinfo
	 * @return
	 */
	public List<CustomerInfo> getCustomerQualificationInfoList(CustomerInfo cinfo,int pageNo,int pageSize) ;

	/**
	 * 增
	 * */
	public int insertQualificationUser(CustomerQualificationUser cqu);
	
	/**
	 * 改
	 * */
	public int updateQualificationUser(CustomerQualificationUser cqu);
	/**
	 * 
	 * */
	public int deleteQualificationUser(CustomerQualificationUser cqu);
	/**
	 * 根据条件查
	 * */
	public CustomerQualificationUser getByParamsQualificationUser(CustomerQualificationUser cqu);
	/**
	 * 增
	 * */
	public int insertQualificationItem(CustomerQualificationItem cq);
	
	/**
	 * 改
	 * */
	public int updateQualificationItem(CustomerQualificationItem cq);
	
	public int saveQualificationItem(Long uid,Long cusid,Long contractid,Integer[] itemid, String[] content);
	
	/**
	 * 根据条件查
	 * */
	public CustomerQualificationItem getByParamsQualificationItem(CustomerQualificationItem cq);
	/**
	 *  取得资质跟进记录
	 * @param cinfo
	 * @return
	 */
	public List<CustomerQualificationItem> getCustomerQualificationItemList(CustomerQualificationItem cq,int pageNo,int pageSize) ;
	/**
	 *  取得资质从业人员列表
	 * @param cinfo
	 * @return
	 */
	public List<CustomerInfo> getCustomerQualificationUserList(CustomerInfo cinfo,int pageNo,int pageSize) ;

	/**
	 *  取得已聘用未聘用的资质人员
	 * @param info
	 * @return
	 */
	public List<CustomerInfo> getQualificationCustomerList(CustomerInfo info,int pageNo,int pageSize) ;
	
	/**
	 *  取得挂靠企业
	 * @param info
	 * @return
	 */
	public List<CustomerInfo> getGaokaoCustomerList(CustomerInfo info,int pageNo,int pageSize) ;
	
	public int getIdCardCount(CustomerInfo info);
	
	/**
	 *  根据业务ID查询企业信息
	 * @param info
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Pager getCustomerByBiz(CustomerInfo info,int pageNo,int pageSize);
		
}
